1. Uso de *args y **kwargs 您所在的位置:网站首页 return func self args kwargs 1. Uso de *args y **kwargs

1. Uso de *args y **kwargs

2023-10-19 13:01| 来源: 网络整理| 查看: 265

1. Uso de *args y **kwargs露

La mayor铆a de los programadores nuevos en Python tienen dificultades para entender el uso de *args y **kwargs. 驴Para qu茅 se usan? Lo primero de todo es que en realidad no tienes porque usar los nombres args o kwargs, ya que se trata de una mera convenci贸n entre programadores. Sin embargo lo que si que tienes que usar es el asterisco simple * o doble **. Es decir, podr铆as escribir *variable y **variables. Empecemos viendo el uso de *args.

1.1. Uso de *args露

El principal uso de *args y **kwargs es en la definici贸n de funciones. Ambos permiten pasar un n煤mero variable de argumentos a una funci贸n, por lo que si quieres definir una funci贸n cuyo n煤mero de par谩metros de entrada puede ser variable, considera el uso de *args o **kwargs como una opci贸n. De hecho, el nombre de args viene de argumentos, que es como se denominan en programaci贸n a los par谩metros de entrada de una funci贸n.

A continuaci贸n te mostramos un ejemplo para que veas el uso de *args:

def test_var_args(f_arg, *argv): print("primer argumento normal:", f_arg) for arg in argv: print("argumentos de *argv:", arg) test_var_args('python', 'foo', 'bar')

Y la salida que produce el c贸digo anterior al llamarlo con 3 par谩metros es la siguiente:

primer argumento normal: python argumentos de *argv: foo argumentos de *argv: bar

Espero que esto haya aclarado el uso de *args, continuemos con **kwargs.

1.2. Uso de **kwargs露

**kwargs permite pasar argumentos de longitud variable asociados con un nombre o key a una funci贸n. Deber铆as usar **kwargs si quieres manejar argumentos con nombre como entrada a una funci贸n. Aqu铆 tienes un ejemplo de su uso.

def saludame(**kwargs): for key, value in kwargs.items(): print("{0} = {1}".format(key, value)) >>> saludame(nombre="Covadonga") nombre = Covadonga

Es decir, dentro de la funci贸n no solo tenemos acceso a la variable como con *args, sino que tambi茅n tenemos acceso a un nombre o key asociado. A continuaci贸n veremos como se puede usar *args y **kwargs para llamar a una funci贸n con una lista o diccionario como argumentos.

1.3. Usando *args y **kwargs para llamar a una funci贸n露

Ahora veremos como se puede llamar a una funci贸n usando *args y **kwargs. Consideremos la siguiente.

def test_args_kwargs(arg1, arg2, arg3): print("arg1:", arg1) print("arg2:", arg2) print("arg3:", arg3)

Ahora puedes usar *args o **kwargs para pasarle argumentos a la funci贸n. Se puede hacer de la siguiente manera:

# Primero con *args >>> args = ("dos", 3, 5) >>> test_args_kwargs(*args) arg1: dos arg2: 3 arg3: 5 # Ahora con **kwargs: >>> kwargs = {"arg3": 3, "arg2": "dos", "arg1": 5} >>> test_args_kwargs(**kwargs) arg1: 5 arg2: dos arg3: 3

Por 煤ltimo, si quieres usar los tres tipos de argumentos de entrada a una funci贸n: normales, *args y **kwargs, deber谩s hacerlo en el siguiente orden.

funcion(fargs, *args, **kwargs) 1.4. 驴Cu谩ndo usarlos?露

Depender谩 mucho de los requisitos de tu programa, pero uno de los usos m谩s comunes es para crear decoradores para funciones (que veremos en otro cap铆tulo). Tambi茅n puede ser usado para monkey patching, lo que significa modificar c贸digo en tiempo de ejecuci贸n. Considera por ejemplo que tienes una clase con una funci贸n llamada get_info que llama a una API que devuelve una determinada respuesta. Si quieres testearla, se puede reemplazar la llamada a la API por unos datos de test, como por ejemplo:

import someclass def get_info(self, *args): return "Test data" someclass.get_info = get_info

Estoy seguro de que se te ocurren otros usos.



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有